package com.yunyao.framework.service;

import com.yunyao.common.dto.supplier.ContractDto;
import com.yunyao.common.dto.SoSupplyDto;
import com.yunyao.common.web.util.PageResult;
import com.yunyao.common.web.util.YResult;

import com.yunyao.framework.dto.soSupply.SoSupplyMaterialDeletedDto;
import com.yunyao.framework.dto.soSupply.SoSupplyMaterialDto;
import com.yunyao.framework.dto.contract.ContractWirePaySaveDto;
import com.yunyao.framework.dto.soSupply.SoSupplyMaterialSaveDto;
import com.yunyao.framework.vo.contract.ContractNodePayVO;
import com.yunyao.framework.vo.contract.ContractWirePayVO;
import com.yunyao.framework.vo.sosyupply.SoSupplyMaterialVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 验收清单材料，付款节点
 * */
public interface SoSupplyOrderService {
    /**
     * 获取验收清单材料列表
     * @param soSupplyMaterialDto
     * @return
     */
    YResult<PageResult<SoSupplyMaterialVO>> getPoSupplyMaterialList(SoSupplyMaterialDto soSupplyMaterialDto);

    YResult<PageResult<SoSupplyMaterialVO>> getPoSupplyMaterialListbySupplyId(SoSupplyMaterialDto soSupplyMaterialDto);

    BigDecimal getBySupplyId(List<String> bizIds);

    /**
     * 获取合同付款方式信息
     * @param contractDto
     * @return
     */
    YResult<ContractWirePayVO> getWirePayInfo(ContractDto contractDto);

    /**
     * 获取合同付款方式节点信息列表
     * @param contractDto
     * @return
     */
    YResult<PageResult<ContractNodePayVO>> getContractNodePayList(ContractDto contractDto);

    /**
     * 保存验收清单材料信息
     *
     * @param saveDto
     * @return
     */
    YResult<String> saveMaterialInfo(SoSupplyMaterialSaveDto saveDto);

    /**
     * 保存合同付款方式信息
     *
     * @param saveDto
     * @return
     */
    YResult<String> savePayInfo(ContractWirePaySaveDto saveDto);

    /**
     * 删除合同材料信息
     * @param deletedDto
     * @return
     */
    YResult<String> deletedMaterialInfo(SoSupplyMaterialDeletedDto deletedDto);

    YResult<String> confirmFinish(SoSupplyDto orderDto);
}
